perm filename GOGOL.MS[10X,AIL] blob
sn#091953 filedate 1974-03-26 generic text, type T, neo UTF8
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 1,1
******** GOGOL **** PAGE 1
1) COMMENT ⊗ VALID 00060 PAGES
1) RECORD PAGE DESCRIPTION
1) 00001 00001
1) 00013 00002 HISTORY
1) 00023 00003 SUBTTL Command File Descriptions
1) 00025 00004 SUBTTL Conditional Assembly Switches, Macros
1) 00029 00005 SUBTTL Titles, Versions
1) 00030 00006 SUBTTL AC Definitions
1) 00031 00007 CDB, SIMIO Indices For IOSER, OTHER INDICES
1) 00036 00008 SUBTTL Base (Low Segment) Data Descriptions -- Macros, Compil spec
1) 00038 00009 Base (Low Segment) Data Descriptions - Params, Links, Size specs
1) 00049 00010 SUBTTL Initialization Routines, Data
1) 00051 00011 SUBTTL Sailor, Reent -- Allocation, Main Program Control
1) 00054 00012 SUBTTL .SEG2. -- Get a second segment
1) 00057 00013
1) 00060 00014
1) 00065 00015
1) 00066 00016 Segment-Fetching Data
1) 00072 00017
1) 00073 00018 SUBTTL %ALLOC -- Main Allocation Routine
1) 00079 00019
1) 00087 00020
1) 00092 00021
1) 00098 00022 COMMENT Utility Subroutines for allocation
1) 00100 00023 SUBTTL %UUOLNK -- UUO Handler (Dispatch Vector Just Below)
1) 00102 00024 DSCR OCTPNT, DECPNT UUO'S
1) 00105 00025 DSCR PRINIT -- INTERFACE TO SYSTEM PRINTING FACILITIES
1) 00109 00026 DSCR ERROR UUOS
1) 00116 00027 DSCR CALLEDFROM -- PRINTS 'CALLED FROM' XXX 'LAST SAIL CALL AT'
1) 00124 00028 SUBTTL Special Printing Routines For Error Handler
1) 00129 00029 DSCR USERERR(VALUE,CODE,"MSG","RESPONSE")
1) 00133 00030 SUBTTL Code to Handle Linkage to Editors
1) 00136 00031 COMMENT EXPORT VERSION OF EDITOR-INTERFACE
1) 00141 00032 SUBTTL SAVE, RESTR, INSET -- General Utility Routines
1) 00145 00033 SUBTTL Core Service Routines -- General Description
1) 00150 00034 SUBTTL Special AC Declarations
1) 00151 00035 SUBTTL Utility Routines
1) 00157 00036
1) 00162 00037 SUBTTL CORGET
1) 00168 00038
1) 00172 00039 SUBTTL CORINC, CANINC
1) 00178 00040 SUBTTL CORREL
1) 00185 00041 SUBTTL CORPRT, CORBIG
1) 00196 00042 DSCR STRGC (REQUEST)
1) 00202 00043 STRGC, Definitions
1) 00206 00044 STRNGC -- Init, CALSGL, SGSWEP -- main loop through space sorting
1) 00211 00045 STRNGC -- SWPLUP -- main sweep (string moving) loop
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 1,1
1) 00213 00046 STRNGC -- SWPDUN -- expansion/contraction, parameter update
1) 00218 00047 STRNGC -- STSTAT -- Finish Up, collect statistics
1) 00221 00048 STRNGC Service routines -- SGSORT
1) 00224 00049 STRNGC Service routines -- SPGC,STRMRK, etc. -- Descriptor providing routines
1) 00229 00050 STRNGC Service routines -- SRTSPC -- space sorter
1) 00233 00051 STRNGC Service routines -- SOURCE and DEST
1) 00237 00052
1) 00244 00053 STRNGC Service routines -- SGINS and SGREM
1) 00246 00054 STRNGC Service routines -- STCLER and RESCLR
1) 00248 00055 SUBTTL Some Runtime Routines Which Could Go Nowhere Else
1) 00249 00056 COMMENT Kounter Routines
1) 00251 00057
1) 00261 00058 DSCR POW, FPOW, LOGS, FLOGS. BOTH RETURN REALS.
1) 00266 00059 DSCR EXP,ALOG -- FOR USE BY EXPONENTIATION ROUTINES & WORLD
1) 00274 00060 DSCR VAL←CODE(OCTAL COMMAND, REFERENCE ARG)
1) 00278 ENDMK
1) ⊗;
*** GOGOL[S,AIL] *** PAGE 1
2) COMMENT ⊗ VALID 00060 PAGES VERSION 17-1(47)
2) RECORD PAGE DESCRIPTION
2) 00001 00001
2) 00013 00002 HISTORY
2) 00023 00003 Command File Descriptions
2) 00025 00004 Conditional Assembly Switches, Macros
2) 00029 00005 Titles, Versions
2) 00030 00006 AC Definitions
2) 00031 00007 CDB, SIMIO Indices For IOSER, OTHER INDICES
2) 00036 00008 Base (Low Segment) Data Descriptions -- Macros, Compil spec
2) 00038 00009 Base (Low Segment) Data Descriptions - Params, Links, Size specs
2) 00047 00010 Initialization Routines, Data
2) 00049 00011 Sailor, Reent -- Allocation, Main Program Control
2) 00052 00012 .SEG2. -- Get a second segment
2) 00055 00013
2) 00058 00014
2) 00063 00015
2) 00064 00016 Segment-Fetching Data
2) 00069 00017
2) 00070 00018 %ALLOC -- Main Allocation Routine
2) 00076 00019
2) 00084 00020
2) 00089 00021
2) 00095 00022 Utility Subroutines for allocation
2) 00097 00023 %UUOLNK -- UUO Handler (Dispatch Vector Just Below)
2) 00099 00024 DSCR OCTPNT, DECPNT UUO'S
2) 00102 00025 DSCR PRINIT -- INTERFACE TO SYSTEM PRINTING FACILITIES
2) 00103 00026 DSCR ERROR UUOS
2) 00110 00027 DSCR CALLEDFROM -- PRINTS 'CALLED FROM' XXX 'LAST SAIL CALL AT'
2) 00115 00028 Special Printing Routines For Error Handler
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 1,1
2) 00120 00029 DSCR USERERR(VALUE,CODE,"MSG","RESPONSE")
2) 00124 00030 Code to Handle Linkage to Editors
2) 00127 00031 EXPORT VERSION OF EDITOR-INTERFACE
2) 00131 00032 SAVE, RESTR, INSET -- General Utility Routines
2) 00135 00033 Core Service Routines -- General Description
2) 00140 00034 Special AC Declarations
2) 00141 00035 Utility Routines
2) 00147 00036
2) 00152 00037 CORGET
2) 00158 00038
2) 00162 00039 CORINC, CANINC
2) 00168 00040 CORREL
2) 00175 00041 CORPRT, CORBIG
2) 00186 00042 DSCR STRGC (REQUEST)
2) 00192 00043 STRGC, Definitions
2) 00196 00044 STRNGC -- Init, CALSGL, SGSWEP -- main loop through space sorting
2) 00201 00045 STRNGC -- SWPLUP -- main sweep (string moving) loop
2) 00203 00046 STRNGC -- SWPDUN -- expansion/contraction, parameter update
2) 00208 00047 STRNGC -- STSTAT -- Finish Up, collect statistics
2) 00210 00048 STRNGC Service routines -- SGSORT
2) 00213 00049 STRNGC Service routines -- SPGC,STRMRK, etc. -- Descriptor providing routines
2) 00218 00050 STRNGC Service routines -- SRTSPC -- space sorter
2) 00222 00051 STRNGC Service routines -- SOURCE and DEST
2) 00226 00052
2) 00233 00053 STRNGC Service routines -- SGINS and SGREM
2) 00235 00054 STRNGC Service routines -- STCLER and RESCLR
2) 00237 00055 Some Runtime Routines Which Could Go Nowhere Else
2) 00238 00056 Kounter Routines
2) 00240 00057
2) 00246 00058 DSCR POW, FPOW, LOGS, FLOGS. BOTH RETURN REALS.
2) 00251 00059 DSCR EXP,ALOG -- FOR USE BY EXPONENTIATION ROUTINES & WORLD
2) 00259 00060 DSCR VAL←CODE(OCTAL COMMAND, REFERENCE ARG)
2) 00261 ENDMK
2) ⊗;
******** GOGOL **** PAGE 9
1) NOTENX<
1) EXPO <
1) XX (OTSTRBF,<BLOCK 20>,INTERNAL,20) ;OUTSTR BUFFER
1) >;EXPO
1) >;NOTENX
1) CMU < ;THIS STUFF USED FOR GAS
1) XX (GASCMD,0,INTERNAL) ;IF 0 THEN VIRGIN, SO
1) ;SET NEG & SET LH(JOBHRL) TO -1 & EXIT
1) XX (THIS.MOD,0,INTERNAL) ;
1) >;CMU
1) ;TENEX XX VARIABLES - MOSTLY FOR INTERRUPTS
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 9,9
1) TENX <
1) XX (CHNTAB,<BLOCK =36>,INTERNAL,=36);SHOULD BE REFERENCED
1) XX (LEVTAB,LPC1,INTERNAL) ;ONLY FROM CODE AT STRT IN SAILOR, Q.V.
1) XX (,LPC2,)
1) XX (,LPC3,)
1) XX (LPC1,0,INTERNAL)
1) XX (LPC2,0,INTERNAL)
1) XX (LPC3,0,INTERNAL)
1) XX (JMPCHN,<BLOCK =36*3>,INTERNAL,=36*3)
1) LOW <
1) EXTERNAL EINTA
1) >;LOW
1) XX (EINT1,0,INTERNAL,)
1) XX (,<JRST EINTA>,,)
1) XX (EINT2,0,INTERNAL,)
1) XX (,<JRST EINTA>,,)
1) XX (EINT3,0,INTERNAL,)
1) XX (,<JRST EINTA>,,)
1) ;XX VARIABLES FOR IO
1) XX (JFNTBL,<BLOCK JFNSIZE>,INTERNAL,JFNSIZE) ;JFNs for each channel
1) XX (CDBTBL,<BLOCK JFNSIZE>,INTERNAL,JFNSIZE) ;Addr. of chnl data buffer for each chnl
1) XX (PRTMP,0,INTERNAL)
1) XX (CTLOSW,0,INTERNAL) ;CTRL-O SWITCH
1) XX (TTCSVB,0,INTERNAL) ;TENEX emulation of TTCALL
1) >;TENX
1) ;PUT NO XX VARIABLES IN AFTER THIS POINT
1) LOW<
1) EXTERNAL LPINI
*** GOGOL[S,AIL] *** PAGE 9
2) EXPO <
2) XX (OTSTRBF,<BLOCK 20>,INTERNAL,20) ;OUTSTR BUFFER
2) >;EXPO
2) CMU < ;THIS STUFF USED FOR GAS
2) XX (GASCMD,0,INTERNAL) ;IF 0 THEN VIRGIN, SO
2) ;SET NEG & SET LH(JOBHRL) TO -1 & EXIT
2) XX (THIS.MOD,0,INTERNAL) ;
2) >;CMU
2) LOW <
2) EXTERNAL LPINI
******** GOGOL **** PAGE 11
1) STRT:
1) NOTENX <
1) CALL6(RESET)
1) >;NOTENX
1) CMU <
*** GOGOL[S,AIL] *** PAGE 11
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 11,11
2) STRT: CALL6(RESET)
2) CMU <
******** GOGOL **** PAGE 11
1) TENX <
1) EXTERNAL .RESET ;TO BE FOUND IN TENEX IOSER
1) PUSHJ P,.RESET ;JSYS RESET, SET UP INTERRUPTS, CLEAR SAIL FILE SYSTEM
1) >;TENX
1) MOVEI A,RESTRT ;CHANGE JOBSA AND JOBREN
*** GOGOL[S,AIL] *** PAGE 11
2) MOVEI A,RESTRT ;CHANGE JOBSA AND JOBREN
******** GOGOL **** PAGE 11
1) NOTENX <
1) CALL6 (0,RESET) ;CLEAR THE I/O WORLD
1) CALL6 (1,EXIT) ;QUIT QUIETLY
1) >;NOTENX
1) TENX <
1) JSYS HALTF
1) JRST .-1 ;NO CONTINUATION
1) >;TENX
1) SUBTTL .SEG2. -- Get a second segment
1) COMMENT ⊗ Initialize the second segment, if there is none and if desired.
1) This occurs when the program is first started. This is a dummy routine
1) if not a SAISEG-program
1) ⊗
1) NOTENX <
1) INTERNAL .SEG2.
*** GOGOL[S,AIL] *** PAGE 11
2) CALL6 (0,RESET) ;CLEAR THE I/O WORLD
2) CALL6 (1,EXIT) ;QUIT QUIETLY
2) SUBTTL .SEG2. -- Get a second segment
2) COMMENT ⊗ Initialize the second segment, if there is none and if desired.
2) This occurs when the program is first started. This is a dummy routine
2) if not a SAISEG-program
2) ⊗
2) INTERNAL .SEG2.
******** GOGOL **** PAGE 12
1) >;NOTENX
1) >;NOUP
1) NOTENX <
1) NOCMU <
*** GOGOL[S,AIL] *** PAGE 12
2) >;NOUP
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 12,12
2) NOCMU <
******** GOGOL **** PAGE 13
1) NOEXPO <
1) ;SEGMENT NAME NOT USEFUL TO EXPO SYSTEM
1) GLOB <
*** GOGOL[S,AIL] *** PAGE 13
2) NOEXPO < ;SEGMENT NAME NOT USEFUL TO EXPO SYSTEM
2) GLOB <
******** GOGOL **** PAGE 14
1) >;NOTENX
1) EXPO <
*** GOGOL[S,AIL] *** PAGE 14
2) EXPO <
******** GOGOL **** PAGE 15
1) NOTENX <
1) SUBTTL Segment-Fetching Data
*** GOGOL[S,AIL] *** PAGE 15
2) SUBTTL Segment-Fetching Data
******** GOGOL **** PAGE 16
1) >;NOTENX
1) TENX <
1) NOUP <
1) INTERNAL .SEG2.
1) .SEG2.: MOVE 1,[XWD 400000,SEGPAG] ;THIS FORK←←400000
1) JSYS RPACS
1) TLNE 2,10000 ;DOES THE PAGE FOR THE SEGMENT EXIST?
1) JRST (P) ;YES
1) HRLZI 1,100001
1) HRROI 2,[FILXXX]
1) JSYS GTJFN
1) JRST [HRROI 1,[ASCIZ/SAIL segment loading error on segment:
1) /]
1) JSYS PSOUT
1) HRROI 1,[FILXXX]
1) JSYS PSOUT
1) HRROI 1,[ASCIZ/
1) /]
1) JSYS PSOUT
1) HLTAGN: JSYS HALTF
1) JRST HLTAGN ;NO CONTINUATION
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 16,16
1) ]
1) HRLI 1,400000
1) JSYS GET
1) SETOM JOBHRL
1) JRST (P)
1) >;NOUP
1) >;TENX
1) ENDCOM(LOR)
*** GOGOL[S,AIL] *** PAGE 16
2) ENDCOM(LOR)
******** GOGOL **** PAGE 19
1) IMSSS<;HACK FOR MISERABLE IMSSS LOADER -- REMOVE WITH NEW LOADER
1) SETO 1, ;SET TO REMOVE PAGE
1) HRRZ 2,JOBREL ;THAT THE LOADER LEAVES
1) LSH 2,-11 ;WRITE PROTECTED
1) ADDI 2,1
1) HRLI 2,400000 ;THIS FORK
1) JSYS PMAP ;REMOVE
1) >;IMSSS
1) ;;%BF% be sure the ERR below will work
*** GOGOL[S,AIL] *** PAGE 19
2) ;;%BF% be sure the ERR below will work
******** GOGOL **** PAGE 25
1) TENX <
1) LDB A,[POINT 4,JOBUUO,12]
1) HRRZ FF,JOBUUO
1) TRNN FF,777776 ;IF ADDR. IS FF OR A GET ARG AND/OR
1) ADDI FF,-1(P) ;PUT ANSWER ON STACK WORD FOR FF OR A
1) JRST @.+1(A)
1) ;TTCALL DISPATCH TABLE
1) TTC0
1) TTC1
1) TTC2
1) TTC3
1) TTC4
1) TTC5
1) ILLUUO
1) ILLUUO
1) ILLUUO
1) TTC11
1) TTC12
1) TTC13
1) TTC14
1) ILLUUO
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 25,25
1) ILLUUO
1) ILLUUO
1) TTC4: ;EFFECTIVELY SAME AS TTC0 GIVEN 10X WAKEUP BEHAVIOR
1) TTC0: MOVEM B,TTCSVB ;SAVE B.
1) TTC01: HRRZI 1,100 ;B34 of RFMOD word returned in 2 says
1) JSYS RFMOD ;that BKJFN has been done since last char was
1) JSYS PBIN ;read, i.e. this PBIN will get a re-run. This is
1) CAIN 1,37 ;best EOL-to-CRLF conversion hack I can devise.
1) JRST TTCEOL ;It's impossible to stick a linefeed back in
1) TTC0RT: MOVE B,TTCSVB ;tty input buffer IN FRONT OF extant type-ahead.
1) MOVEM A,@FF
1) JRST USRXIT ;Returning just CR causes SAIL to look for non-
1) TTCEOL: TRNE 2,2 ;existent LF following. And setting a flag loses
1) JRST TTC0BK ;when some random other code does a PBIN. This
1) HRRZI 1,100 ;way, random other code gets a 37 too (Oh well).
1) JSYS BKJFN ;but at least the pending LF is cleared (since
1) JFCL ;the BKJFN bit is cleared). This code returns a
1) HRRZI A,15 ;CR on first reading of EOL and a LF on second.
1) JRST TTC0RT
1) TTC0BK: HRRZI A,12 ;Second reading of eol here.
1) JRST TTC0RT ;"flag" is effectively cleared by PBIN.
1) TTC1: HRRZ 1,@FF
1) JSYS PBOUT
1) JRST USRXIT
1) TTC2: ;Effectively same as TTC 5.
1) TTC5: HRRZI A,100
1) MOVEM B,TTCSVB ;SAVE B - NEW SIBE: B←CNT OF CHRS WAITING IF ANY
1) JSYS SIBE
1) AOSA -2(P) ;Get char and skip return
1) JRST USRXIT ;NOSKIP, NO CHAR, B UNCHANGED
1) JRST TTC01
1) TTC3: HRRO 1,FF
1) JSYS PSOUT
1) JRST USRXIT
1) TTC11: HRRZI 1,100
1) JSYS CFIBF
1) JRST USRXIT
1) TTC12: HRRZI 1,101
1) JSYS CFOBF
1) JRST USRXIT
1) TTC13:
1) TTC14: HRRZI A,100
1) JSYS SIBE
1) AOS -2(P) ;CHAR HAS BEEN TYPED, SKIP RET (BUT
1) ;DON'T READ ANYTHING IN)
1) JRST USRXIT ;NOTHING, NOSKIP.
1) ;This emulates DECUS's SKPINC & SKPINL. Stanford's TTCALL 14,
1) ;is different. I have found one instance of its use (at PARSE&LINSTOP)
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 25,25
1) ;which as far as I could tell wouldn't work on EXPORT systems,
1) ;so I put that under a STANFO switch.
1) >;TENX
1) DSCR ERROR UUOS
*** GOGOL[S,AIL] *** PAGE 25
2) IFN 0,<
2) MOVE A,FF ;SAVE ARGUMENT
2) JSP FF,SAVM ;GET MORE AC'S
2) LDB C,[POINT 4,JOBUUO,12]
2) JRST @PTBL(C)
2) PTBL: GCH ;0 -- GET A CHAR
2) PCH ;1 -- PRINT A CHAR
2) 0
2) PST ;3 -- PRINT A STRING
2) PST: TTCALL 3,@JOBUUO ;CALL SYSTEM
2) POPJ P,
2) PCH: TTCALL 1,A ;PRINT CHAR
2) POPJ P,
2) GCH: HRRZ B,JOBUUO ;GET EFF ADDRESS
2) CAIG B,D
2) ADDI B,-5(P) ;RELOCATE INTO STACK.
2) TTCALL 0,(B) ;AND READ A CHAR
2) POPJ P,
2) >
2) DSCR ERROR UUOS
******** GOGOL **** PAGE 27
1) PRINT <
1) Called from >
1) MOVEI A,-1(A)
*** GOGOL[S,AIL] *** PAGE 27
2) PRINT <Called from >
2) MOVEI A,-1(A)
******** GOGOL **** PAGE 27
1) WATNOW:
1) IMSSS<;IMSSS KLUDGE FOR STUDENT SYSTEM
1) PUSHJ P,KIDCHK
1) >;IMSSS
1) MOVE A,GOGTAB ;ADDRESS OF USER TABLE
1) HRRZ FF,TOPBYTE(A) ;CURRENT STRING POINTER
*** GOGOL[S,AIL] *** PAGE 27
2) WATNOW: MOVE A,GOGTAB ;ADDRESS OF USER TABLE
2) HRRZ FF,TOPBYTE(A) ;CURRENT STRING POINTER
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 27,27
******** GOGOL **** PAGE 27
1) RESGOT:
1) CAIL A,"a" ;lower case?
1) SUBI A,40 ;YES, CONVERT TO UPPER
*** GOGOL[S,AIL] *** PAGE 27
2) RESGOT: CAIL A,"a" ;lower case?
2) SUBI A,40 ;YES, CONVERT TO UPPER
******** GOGOL **** PAGE 27
1) IMSSS<;KLUDGE FOR STUDENT SYSTEM
1) KIDCHK: PUSH P,A
1) PUSH P,B
1) MOVEI A,101 ;PRIMARY INPUT
1) JSYS RFMOD
1) TRNE B,1B33 ;A STUDENT JOB?
1) JRST ISKIDY ;YES
1) POP P,B
1) POP P,A
1) POPJ P,
1) ISKIDY: HRROI A,[ASCIZ/
1) Sorry, system error.
1) /]
1) JSYS PSOUT
1) SETO A,
1) JSYS KLGOT ;LOG HIM OUT
1) >;IMSSS
1) NOTENX <
1) DDIT: SKIPN JOBDDT
*** GOGOL[S,AIL] *** PAGE 27
2) DDIT: SKIPN JOBDDT
******** GOGOL **** PAGE 27
1) XIT:
1) MOVEI A,[CALL6 (EXIT)] ;PREPARE TO EXIT
1) POPJ P, ;NON SKIP RETURN.
1) EPOPJ: AOS (P) ;SKIP RETURN
1) POPJ P,
1) >;NOTENX
1) TENX < ;TENEX CODE TO GET UDDT (DEFINED IN THE FILSPC SECTION OF HEAD)
1) ;IF NO DDT ALREADY HERE
1) DDTORG←←770000
1) DDTPAG←←770
1) UDTSYM←←DDTORG+1 ;UDDT KEEPS A SYMBOL TABLE POINTER HERE
1) DDIT: SKIPE JOBDDT
1) JRST [HRROI 1,[ASCIZ/
1) Type DT.RET$G to continue.
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 27,27
1) /]
1) JSYS PSOUT
1) MOVEI A,[JRST @JOBDDT]
1) POPJ P,]
1) PUSH P,1
1) PUSH P,2
1) MOVE 1,[XWD 400000,DDTPAG] ;XWD THIS FORK, PAGE 770
1) JSYS RPACS ;TEST FOR PAGE 770
1) TLNN 2,10000 ;DOES PAGE 770 EXIST?
1) JRST GTUDDT ;NOPE
1) MOVE 1,DDTORG
1) CAME 1,[JRST DDTORG+2] ;DOES IT LOOK LIKE UDDT?
1) JRST GTUDDT ;NOPE
1) GOTUDT: HRROI 1,[ASCIZ/
1) Type DT.RET$G to continue.
1) /]
1) JSYS PSOUT
1) POP P,2
1) POP P,1
1) MOVEI 1,[JRST DDTORG] ;SET UP FOR CALL
1) POPJ P,
1) GTUDDT: MOVSI 1,1
1) HRROI 1,[UDTFIL]
1) JSYS GTJFN
1) JRST [HRROI 1,[ASCIZ/
1) Cannot GTJFN file:
1) /]
1) JSYS PSOUT
1) HRROI 1,[UDTFIL]
1) JSYS PSOUT
1) JSYS HALTF
1) ]
1) PUSH P,1 ;SAVE JFN
1) MOVEI 1,400000 ;THIS FORK
1) JSYS GEVEC ;GET ENTRY VECTOR INTO 2
1) POP P,1 ;JFN FOR UDDT FILE
1) HRLI 1,400000 ;THIS FORK
1) JSYS GET
1) MOVEI 1,400000 ;THIS FORK
1) JSYS SEVEC ;PUT BACK THE ENTRY VECTOR
1) MOVE 1,JOBSYM ;SET UP SYMBOL TABLE POINTER
1) MOVEM 1,@UDTSYM ;SAVE FOR USER
1) JRST GOTUDT ;AND RETURN
1) XIT: MOVEI A,[JRST DOHLTF] ;TENEX VERSION OF EXIT CODE
1) POPJ P,
1) EPOPJ: AOS (P) ;SKIP RETURN
1) POPJ P,
1)
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 27,27
1) DOHLTF: HRROI A,-1
1) JSYS CLOSF ;CLOSING ALL FILES
1) JFCL ;IS PROBABLY DONE
1) JSYS HALTF ;AUTOMATICALLY ON
1) JRST .-1 ;THE DEC SYSTEM
1) >;TENX
1) BADRSP: TERPRI <Reply [CR] to continue,
*** GOGOL[S,AIL] *** PAGE 27
2) XIT: MOVEI A,[CALL6 (EXIT)] ;PREPARE TO EXIT
2) POPJ P, ;NON SKIP RETURN.
2) EPOPJ: AOS (P) ;SKIP RETURN
2) POPJ P,
2) BADRSP: TERPRI <Reply [CR] to continue,
******** GOGOL **** PAGE 30
1) NOTENX <
1) TVEDIT: TDZA 13,13 ;FLAG AS TV
*** GOGOL[S,AIL] *** PAGE 30
2) TVEDIT: TDZA 13,13 ;FLAG AS TV
******** GOGOL **** PAGE 31
1) >;NOTENX
1) TENX <
1) NOIMSSS<
1) EDIT:
1) TVEDIT: TERPRI <NOT IMPLEMENTED>
1) JRST WATNOW
1) >;NOIMSSS
1) IMSSS<
1) EDIT: TDOA A,[-1] ;INDICATE STOPGAP
1) TVEDIT: SETZ A, ;INDICATE TERMINAL-DEPENDENT EDITOR
1) SKIPE .ERRP. ;ANYTHING THERE?
1) JRST TVEDI1 ;YES
1) TERPRI <You cannot edit from here.>
1) JRST WATNOW
1) TVEDI1:
1) PUSH P,A ;INFORMATION ABOUT WHICH EDITOR TO THE STACK
1) MOVEI A,1 ;INDICATE THAT WE WANT AN EDIT
1) PUSHJ P,@.ERRP. ;FOR COMPILER, TO MYERR
1) JRST WATNOW ;WHAT -- IT CONTINUED?
1) >;IMSSS
1) >;TENX
1) SUBTTL SAVE, RESTR, INSET -- General Utility Routines
*** GOGOL[S,AIL] *** PAGE 31
2) SUBTTL SAVE, RESTR, INSET -- General Utility Routines
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 31,31
******** GOGOL **** PAGE 36
1) NOTENX <
1) CALL6 (TEMP,CORE) ;GET ENOUGH
1) CORERR <DRYROT -- NO ROOM FOR USER TABLE>
1) >;NOTENX
1) TENX <
1) HRRZM TEMP,JOBREL
1) >;TENX
1) CORTHER:
*** GOGOL[S,AIL] *** PAGE 36
2) CALL6 (TEMP,CORE) ;GET ENOUGH
2) CORERR <DRYROT -- NO ROOM FOR USER TABLE>
2) CORTHER:
******** GOGOL **** PAGE 38
1) IFNDEF SEGLOC, <SEGLOC←←400000>
1) ;ON TENEX, SEGLOC MAY BE ALMOST ANYWHERE
1) CAIL TEMP,SEGLOC ;WELL??
1) JRST BLEWIT ;GREAT EROR
1) >;UP
1) NOTENX <
1) CALL6 (TEMP,CORE) ;ASK FOR MORE
1) ;;%##% USED TO BE GETRST
1) JRST BLEWIT ;CAN'T GET IT
1) >;NOTENX
1) TENX <
1) HRRZM TEMP,JOBREL ;SEE COMMENT @ NODDT ABOVE
1) >;TENX
1) ;;%BB% dcs ! for 2
*** GOGOL[S,AIL] *** PAGE 38
2) CAIL TEMP,400000 ;WELL??
2) JRST BLEWIT ;GREAT EROR
2) >;UP
2) CALL6 (TEMP,CORE) ;ASK FOR MORE
2) ;;%##% USED TO BE GETRST
2) JRST BLEWIT ;CAN'T GET IT
2) ;;%BB% dcs ! for 2
******** GOGOL **** PAGE 40
1) NOTENX <
1) CALL6 (TEMP,CORE)
1) ERR <DRYROT --CORSER&LNKRET>
1) >;NOTENX
1) TENX <
1) HRRZM TEMP,JOBREL ;SEE COMMENT @ NODDT ABOVE
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 40,40
1) >;TENX
1) ;;%BB%
*** GOGOL[S,AIL] *** PAGE 40
2) CALL6 (TEMP,CORE)
2) ERR <DRYROT --CORSER&LNKRET>
2) ;;%BB%
******** GOGOL **** PAGE 44
1) NOTENX <
1) CALL6 (TEMP,MSTIME)
1) MOVNM TEMP,SGCTIME(USER)
1) >;NOTENX
1) TENX <
1) MOVEM 1,SGCTIME(USER) ;SAVE 1 & 2
1) MOVE TEMP,2 ;"TIME" GIVES TIME IN 1, DIVISOR
1) JSYS TIME ;TO GET SECONDS IN 2 (ALWAYS
1) MOVNS 1 ;1000 SO FAR)
1) EXCH 1,SGCTIME(USER) ;BUT SHOULD THIS REALLY BE TIME
1) MOVE 2,TEMP ;OF DAY, NOT BILLABLE RUNTIME?
1) >;TENX
1) SGC1: MOVEM 11,SGACS+11(USER)
*** GOGOL[S,AIL] *** PAGE 44
2) CALL6 (TEMP,MSTIME)
2) MOVNM TEMP,SGCTIME(USER)
2) SGC1: MOVEM 11,SGACS+11(USER)
******** GOGOL **** PAGE 47
1) NOTENX <
1) CALL6 (TEMP,MSTIME) ;Collect GC times
1) >;NOTENX
1) TENX <
1) EXCH 1,TEMP
1) PUSH P,2
1) JSYS TIME
1) POP P,2
1) EXCH 1,TEMP
1) >;TENX
1) ADDB TEMP,SGCTIME(USER)
*** GOGOL[S,AIL] *** PAGE 47
2) CALL6 (TEMP,MSTIME) ;Collect GC times
2) ADDB TEMP,SGCTIME(USER)
******** GOGOL **** PAGE 57
1) NOTENX<
1) HERE(K.OUT)
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 57,57
*** GOGOL[S,AIL] *** PAGE 57
2) HERE(K.OUT)
******** GOGOL **** PAGE 57
1) >;NOTENX
1) TENX<;TENEX VERSION OF K.OUT
1) HERE(K.OUT)
1) MOVE USER,GOGTAB
1) SKIPN KNTLNK(USER) ;ANY KOUNTERS?
1) POPJ P,
1) COMMENT ⊗ SAVE ACS 0-14
1) ⊗;
1) MOVEM 14,15(P)
1) MOVEI 14,1(P)
1) BLT 14,14(P)
1) ADD P,[XWD 15,15]
1) TLNN P,400000 ;OVERFLOW?
1) ERR <PDL overflow in K.OUT routine>
1) COMMENT ⊗ Chain the counters together as above.
1) ⊗;
1) MOVE 2,KNTLNK(USER)
1) SKIPN 1,(2)
1) JRST .+5
1) MOVEI 0,1(2)
1) MOVEM 0,3(1)
1) MOVE 2,1
1) JRST .-5
1)
1) COMMENT ⊗
1) At this point, 1(2) contains the start of a DEC-style
1) dump mode command chain that will be used to write out the
1) counters. -1(2) contains the sixbit for the file name.
1) ⊗;
1) MOVE 5,2 ;SAVE POINTER TO THE CHAIN
1) PUSH P,-1(5) ;SIXBIT/FILENAME/
1) PUSHJ P,CVXSTR ;GET ASCII
1) PUSH P,[0]
1) PUSHJ P,CATCHR ;PUT A NULL BYTE ON THE END
1) POP SP,2 ;BP TO 2 FOR GTJFN
1) SUB SP,X11 ;CLEAR SP STACK
1) MOVEI 1,EKNT ;LONG FORM
1) JSYS GTJFN
1) JRST KNTERR ;GTJFN ERROR
1) MOVE 2,[XWD 440000,100000] ;36 BIT WRITE
1) JSYS OPENF ;JFN REMAINS IN 1
1) JRST KNTERR ;OPENF ERROR
1) ;5 HAS THE START OF A DUMP-MODE COMMAND CHAIN, WHICH WE MUST
1) GOGOL vs. 2) GOGOL[S,AIL] SRCCOM 03-19-74 01:59 PAGES 57,57
1) ;INTERPRET INTO SOUT'S
1) MOVEI 4,1(5) ;START OF COMMAND LIST
1) KNTLUP: MOVE 3,(4)
1) JUMPE 3,KNTDUN ;0 COMMAND MEANS TO STOP
1) TLNE 3,-1 ;0 LEFT HALF MEANS GOTO
1) JRST KNTOUT ;REAL IO WORD
1) MOVE 4,3 ;OK DO THE GOTO
1) JRST KNTLUP
1)
1) KNTOUT: HRRI 2,1(3) ;FIRST LOCATION
1) HRLI 2,444400 ;MAKE A BP
1) HLRO 3,3 ;WORD COUNT
1) JSYS SOUT
1) AOJA 4,KNTLUP
1) KNTDUN: JSYS CLOSF ;CLOSE OUT THE FILE
1) JFCL ;ERROR RETURN
1)
1) KNTRET: MOVSI 14,-14(P) ;RESTORE ACS
1) BLT 14,14
1) SUB P,[XWD 15,15]
1) POPJ P, ;AND RETURN
1) KNTERR: ERR <K.OUT: Cannot GTJFN or OPENF file>,1
1) JRST KNTRET
1) EKNT: XWD 400000,0 ;NEW VERSION
1) XWD 377777,377777 ;NO EXTRA JFNS
1) BLOCK 3
1) XWD -1,[ASCIZ/KNT/] ;DEFAULT VERSION IS .KNT
1) BLOCK 3
1) >;TENX
1) ENDCOM (KNT)
*** GOGOL[S,AIL] *** PAGE 57
2) ENDCOM (KNT)
******** GOGOL **** PAGE 60
1) NOTENX <;CALL FUNCTION EMULATED IN FILE CALL.TNX
1) DSCR VALUE←CALL(VAL,"FUNCTION");
*** GOGOL[S,AIL] *** PAGE 60
2) DSCR VALUE←CALL(VAL,"FUNCTION");
******** GOGOL **** PAGE 60
1) >;NOTENX
*** GOGOL[S,AIL] *** PAGE 60